// pages/dishDetail/dishDetail.js
const dishApi = require('../../api/dish');
const cartApi = require('../../api/cart');

Page({

  /**
   * 页面的初始数据
   */
  data: {
    dish: {}, // 菜品信息
    dishId: '', // 菜品ID
    quantity: 1, // 数量
    flavorOptions: {}, // 存储所有口味选项
    selectedFlavors: {}, // 存储用户选择的口味
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    if (options.id) {
      this.setData({
        dishId: options.id
      });
      this.loadDishDetail(options.id);
      
      // 加载购物车数量
      this.loadCartCount();
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 加载菜品详情
   */
  loadDishDetail(dishId) {
    wx.showLoading({
      title: '加载中...'
    });
    
    // 使用API获取菜品详情
    dishApi.getDishById(dishId).then(res => {
      wx.hideLoading();
      if (res.code === 1 && res.data) {
        this.setData({
          dish: res.data
        });
        
        // 如果菜品有口味选项，解析并设置
        if (res.data.flavors && res.data.flavors.length > 0) {
          try {
            const flavors = res.data.flavors;
            const flavorOptions = {};
            const selectedFlavors = {};
            
            // 解析每种口味的选项
            flavors.forEach(flavor => {
              let options = [];
              
              // 解析口味值
              if (typeof flavor.value === 'string') {
                try {
                  // 尝试解析JSON字符串
                  if (flavor.value.startsWith('[') && flavor.value.endsWith(']')) {
                    options = JSON.parse(flavor.value);
                  } else if (flavor.value.includes(',')) {
                    options = flavor.value.split(',');
                  } else if (flavor.value.includes('|')) {
                    options = flavor.value.split('|');
                  } else {
                    options = [flavor.value];
                  }
                } catch (e) {
                  console.error('解析口味选项失败:', e);
                  options = [flavor.value]; // 解析失败时，将整个字符串作为一个选项
                }
              } else if (Array.isArray(flavor.value)) {
                options = flavor.value;
              }
              
              // 存储该口味的所有选项
              flavorOptions[flavor.name] = options;
              
              // 默认选择第一个选项
              if (options.length > 0) {
                selectedFlavors[flavor.name] = options[0];
              }
            });
            
            this.setData({
              flavorOptions,
              selectedFlavors
            });
          } catch (error) {
            console.error('解析口味数据失败:', error);
          }
        }
      } else {
        wx.showToast({
          title: '获取菜品详情失败',
          icon: 'none'
        });
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      }
    }).catch(err => {
      wx.hideLoading();
      console.error('获取菜品详情失败', err);
      wx.showToast({
        title: '获取菜品详情失败',
        icon: 'none'
      });
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
    });
  },

  /**
   * 选择口味选项
   */
  selectFlavorOption(e) {
    const { flavor, option } = e.currentTarget.dataset;
    
    // 更新选中的口味
    const selectedFlavors = { ...this.data.selectedFlavors };
    selectedFlavors[flavor] = option;
    
    this.setData({
      selectedFlavors
    });
  },

  /**
   * 增加数量
   */
  increaseQuantity() {
    this.setData({
      quantity: this.data.quantity + 1
    });
  },

  /**
   * 减少数量
   */
  decreaseQuantity() {
    if (this.data.quantity > 1) {
      this.setData({
        quantity: this.data.quantity - 1
      });
    }
  },

  /**
   * 添加到购物车
   */
  addToCart() {
    const { dish, quantity, selectedFlavors } = this.data;
    
    // 构建购物车项参数
    const params = {
      dishId: dish.id,
      dishFlavor: JSON.stringify(selectedFlavors),
      number: quantity
    };

    wx.showLoading({
      title: '添加中...'
    });

    // 调用购物车API添加菜品
    cartApi.addToCart(params).then(res => {
      wx.hideLoading();
      if (res.code === 1) {
        // 显示成功提示
        wx.showToast({
          title: '已加入购物车',
          icon: 'success'
        });
        
        // 更新购物车数量
        this.loadCartCount();
      } else {
        wx.showToast({
          title: res.msg || '添加失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      wx.hideLoading();
      console.error('添加购物车失败', err);
      wx.showToast({
        title: '添加购物车失败',
        icon: 'none'
      });
    });
  },

  /**
   * 加载购物车数量
   */
  loadCartCount() {
    cartApi.getCartList().then(res => {
      if (res.code === 1 && res.data) {
        // 计算购物车中的商品总数
        const cartCount = res.data.reduce((total, item) => total + item.number, 0);
        
        // 更新购物车图标的数量
        if (cartCount > 0) {
          wx.setTabBarBadge({
            index: 2, // 购物车图标的位置，根据实际情况调整
            text: cartCount.toString()
          }).catch(err => {
            console.error('设置TabBar徽标失败', err);
          });
        } else {
          wx.removeTabBarBadge({
            index: 2 // 购物车图标的位置，根据实际情况调整
          }).catch(err => {
            console.error('移除TabBar徽标失败', err);
          });
        }
      }
    }).catch(err => {
      console.error('获取购物车列表失败', err);
    });
  },

  /**
   * 返回上一页
   */
  goBack() {
    wx.navigateBack();
  },
  
  /**
   * 查看购物车
   */
  viewCart() {
    // 跳转到首页并显示购物车
    getApp().globalData.showCartAfterRedirect = true;
    
    // 跳转到首页
    wx.switchTab({
      url: '/pages/index/index'
    });
  }
})